package com.ssy.lingxi.common.model.dto;

import java.io.Serializable;
import java.util.List;

/**
 * 用户登录成功后，保存在缓存中的信息
 * @author 万宁
 * @version 2.0.0
 * @date 2020-06-20
 */
public class UserLoginCacheDTO implements Serializable {
    private static final long serialVersionUID = 5780646525950777184L;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 用户姓名
     */
    private String userName;

    /**
     * 用户手机号码
     */
    private String userPhone;

    /**
     * 用户职位
     */
    private String userJobTitle;

    /**
     * 用户所属组织机构名称
     */
    private String userOrgName;

    /**
     * 用户所属的角色名称（会员自定义角色，如果有多个以逗号分隔）
     */
    private String userRoleName;

    /**
     * 用户在所属商户的权限类型枚举，用于标识该用户是否所属会员的管理员
     * 定义在MemberUserAuthTypeEnum中
     */
    private Integer userType;

    /**
     * 用户授权访问的后台接口Url列表
     */
    private List<String> accessUrlList;

    /**
     * 所属会员Id
     */
    private Long memberId;

    /**
     * 会员名称（会员公司名称）
     */
    private String company;

    /**
     * 会员角色Id
     */
    private Long memberRoleId;

    /**
     * 会员角色名称
     */
    private String memberRoleName;

    /**
     * 会员类型枚举，标识角色是“企业会员”、“企业个人会员”、“渠道会员”、“渠道个人会员”
     * 定义在MemberTypeEnum中
     */
    private Integer memberType;

    /**
     * 会员角色类型枚举，标识角色是“服务提供者”、“服务消费者”
     * 定义在RoleTypeEnum中
     */
    private Integer memberRoleType;

    /**
     * 平台会员等级(不是当前登录用户在不同供应商的会员等级)
     */
    private Integer level;

    /**
     * 会员等级类型枚举，标识会员是“平台会员”、“商户会员”、“渠道会员”等
     * 定义在MemberLevelTypeEnum中
     */
    private Integer memberLevelType;

    /**
     * 上级“渠道会员”（包括渠道企业会员、渠道个人会员）的Id列表
     */
    private List<Long> upperChannelMemberIds;

    /**
     * 上级供应商（角色类型为服务提供者）的会员Id和角色Id列表
     */
    private List<MemberAndRoleIdDTO> upperVendorMembers;

    /**
     * 下级供应商（角色类型为服务提供者）的会员Id和角色Id列表
     */
    private List<MemberAndRoleIdDTO> subVendorMembers;

    /**
     * 下级“渠道会员”（包括渠道企业会员、渠道个人会员）的会员Id和角色Id列表
     */
    private List<MemberAndRoleIdDTO> subChannelMembers;

    /**
     * 登录来源，定义在UserLoginSourceEnum中
     */
    private Integer loginSource;

    /**
     * 登录时间，UNIX时间戳格式
     */
    private Long loginTime;

    /**
     * 登录Token的有效时间，单位：分钟
     */
    private Long tokenExpireMinutes;

    /**
     * 用户头像
     * */
    private String logo;

    /**
     * 是否有数据权限，用于数据权限判断
     * 登录时不缓存此值（值为Null），
     * 需要使用数据权限模块提供的功能判断是否有数据权限后手动设置
     */
    private Boolean hasDataAuth;

    /**
     * 用户关联门店id
     */
    private List<Long> storeIds;

    /**
     * 前端站点Id
     */
    private Long siteId;

    /**
     * 前端商城Id
     */
    private Long shopId;

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPhone() {
        return userPhone;
    }

    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }

    public String getUserJobTitle() {
        return userJobTitle;
    }

    public void setUserJobTitle(String userJobTitle) {
        this.userJobTitle = userJobTitle;
    }

    public String getUserOrgName() {
        return userOrgName;
    }

    public void setUserOrgName(String userOrgName) {
        this.userOrgName = userOrgName;
    }

    public String getUserRoleName() {
        return userRoleName;
    }

    public void setUserRoleName(String userRoleName) {
        this.userRoleName = userRoleName;
    }

    public Integer getUserType() {
        return userType;
    }

    public void setUserType(Integer userType) {
        this.userType = userType;
    }

    public List<String> getAccessUrlList() {
        return accessUrlList;
    }

    public void setAccessUrlList(List<String> accessUrlList) {
        this.accessUrlList = accessUrlList;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public Long getMemberRoleId() {
        return memberRoleId;
    }

    public void setMemberRoleId(Long memberRoleId) {
        this.memberRoleId = memberRoleId;
    }

    public String getMemberRoleName() {
        return memberRoleName;
    }

    public void setMemberRoleName(String memberRoleName) {
        this.memberRoleName = memberRoleName;
    }

    public Integer getMemberType() {
        return memberType;
    }

    public void setMemberType(Integer memberType) {
        this.memberType = memberType;
    }

    public Integer getMemberRoleType() {
        return memberRoleType;
    }

    public void setMemberRoleType(Integer memberRoleType) {
        this.memberRoleType = memberRoleType;
    }

    public Integer getMemberLevelType() {
        return memberLevelType;
    }

    public void setMemberLevelType(Integer memberLevelType) {
        this.memberLevelType = memberLevelType;
    }

    public List<Long> getUpperChannelMemberIds() {
        return upperChannelMemberIds;
    }

    public void setUpperChannelMemberIds(List<Long> upperChannelMemberIds) {
        this.upperChannelMemberIds = upperChannelMemberIds;
    }

    public List<MemberAndRoleIdDTO> getUpperVendorMembers() {
        return upperVendorMembers;
    }

    public void setUpperVendorMembers(List<MemberAndRoleIdDTO> upperVendorMembers) {
        this.upperVendorMembers = upperVendorMembers;
    }

    public List<MemberAndRoleIdDTO> getSubVendorMembers() {
        return subVendorMembers;
    }

    public void setSubVendorMembers(List<MemberAndRoleIdDTO> subVendorMembers) {
        this.subVendorMembers = subVendorMembers;
    }

    public List<MemberAndRoleIdDTO> getSubChannelMembers() {
        return subChannelMembers;
    }

    public void setSubChannelMembers(List<MemberAndRoleIdDTO> subChannelMembers) {
        this.subChannelMembers = subChannelMembers;
    }

    public Integer getLoginSource() {
        return loginSource;
    }

    public void setLoginSource(Integer loginSource) {
        this.loginSource = loginSource;
    }

    public Long getLoginTime() {
        return loginTime;
    }

    public void setLoginTime(Long loginTime) {
        this.loginTime = loginTime;
    }

    public Long getTokenExpireMinutes() {
        return tokenExpireMinutes;
    }

    public void setTokenExpireMinutes(Long tokenExpireMinutes) {
        this.tokenExpireMinutes = tokenExpireMinutes;
    }

    public String getLogo() {
        return logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    public Boolean getHasDataAuth() {
        return hasDataAuth;
    }

    public void setHasDataAuth(Boolean hasDataAuth) {
        this.hasDataAuth = hasDataAuth;
    }

    public List<Long> getStoreIds() {
        return storeIds;
    }

    public void setStoreIds(List<Long> storeIds) {
        this.storeIds = storeIds;
    }

    public Long getSiteId() {
        return siteId;
    }

    public void setSiteId(Long siteId) {
        this.siteId = siteId;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }
}
